package ee.ttu.rakarh.model.data.entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.classic.Session;

import ee.ttu.rakarh.model.data.DataType;
import ee.ttu.rakarh.model.data.dao.ItemTypeDAO;
import ee.ttu.rakarh.model.data.dao.ItemTypeDAOImpl;
import ee.ttu.rakarh.util.HibernateUtil;

public class Test {

	private void getItem(Session session) {
		Item item = (Item) session.load(Item.class, 1);

		System.out.println(item.getName());
		System.out.println(item.getProducer());
		System.out.println(item.getProducerCode());
		System.out.println(item.getSalePrice());
		System.out.println(item.getStorePrice());
		System.out.println(item.getCreated());
		System.out.println("Attributes:");
		Set<ItemAttribute> attributes = item.getItemAttributes();
		for (ItemAttribute itemAttribute : attributes) {
			System.out.print("\t");
			System.out
					.print(itemAttribute.getItemAttributeType().getTypeName());
			System.out.print(":\n\t\t");
			if (itemAttribute.getDataType() == DataType.NUMBER)
				System.out.println(itemAttribute.getValueNumber());
			if (itemAttribute.getDataType() == DataType.TEXT)
				System.out.println(itemAttribute.getValueText());
		}
		System.out.println(item.getSupplierEnterprise().getFullName());
		Map<Store, Integer> itemStore = item.getItemStore();
		Set<Store> keys = itemStore.keySet();
		for (Store store : keys) {
			System.out.print(store.getName());
			System.out.print(":");
			System.out.println(itemStore.get(store));
		}
	}

	public static void iterate(Collection<ItemType> types) {

		if (types.size() == 0)
			return;
		for (ItemType itemType : types) {
			for (int i = 1; i < itemType.getLevel(); i++)
				System.out.print("\t");

			System.out.println(itemType.getTypeName());
			iterate(itemType.getSubType());
		}

	}

	public static void main(String args[]) {

		Item item = new Item();
		ItemAttribute itemAttribute = new ItemAttribute();
		
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();		
		session.beginTransaction();
		
		ItemAttributeType iat = (ItemAttributeType) session.load(ItemAttributeType.class, 14);

		itemAttribute.setItemAttributeType(iat);
		itemAttribute.setValueText("hohoho");
		
		item.setName("bbbaabababa");
		
		Set<ItemAttribute> attr = new HashSet<ItemAttribute>();
		attr.add(itemAttribute);
		item.setItemAttributes(attr);
		
		Serializable atrid = session.save(itemAttribute);
		Serializable itemid = session.save(item);
		System.out.println("itemid = " + itemid);
		System.out.println("atrid = " + atrid);
		session.getTransaction().commit();
		// Item newItem = (Item) session.load(Item.class, 10);
		// ItemAttribute itemAtr = new ItemAttribute();
		// itemAtr.setTypeName("hahaAtr");
		// itemAtr.setDataType(DataType.NUMBER);
		// itemAtr.setValueNumber(new Double(150));
		// session.save(itemAtr);
		// Set<ItemAttribute> itrib = new HashSet<ItemAttribute>();
		// itrib.add(itemAtr);
		// newItem.setItemAttributes(itrib);
		// session.getTransaction().commit();

		// ItemType type = (ItemType) session.load(ItemType.class, 1);
		//
		// System.out.println(type.getTypeName());
		//
		// Set<ItemType> subTypes = type.getSubType();
		// for (ItemType itemType : subTypes) {
		// System.out.println(itemType.getTypeName());
		// }

		// item.setItemStore(stores);
		// Boolean raz = true;
		// item.setName("asdasdasd11");
		// for(ItemAttribute at : atr){
		// if(raz){
		// raz = false;
		// at.setValueText("asdaaaa");
		// atr.add(at);
		// }
		// }
//		 Item it = item;
//		 Item item = new Item();
//		 item.setId(10);
//		 item.setName("trrrrr");
//		  Session ss = HibernateUtil.getSessionFactory().getCurrentSession();
//		  ss.beginTransaction();
//		  ss.update(item);
//		  ss.getTransaction().commit();
		//
		// item.setName("newItem");
		// item.setDescription("newDesc");
		//
		// ItemAttribute ia = new ItemAttribute();
		// ia.setValueText("iaForNewItem");
		//
		// // Set<ItemAttribute> atrSet = new List();
		// // atrSet.add(ia);
		// // item.setItemAttributes(atrSet);

		// session.beginTransaction();
		// session.update(item);

		// System.out.println("!!!");
		// System.out.println(a);
		// System.out.println("!!!");
		// session.getTransaction().commit();
	}
}
